package com.example.express.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.express.domain.bean.OrderInfo;
import com.example.express.domain.vo.admin.AdminOrderVO;
import com.example.express.domain.vo.courier.CourierOrderVO;
import com.example.express.domain.vo.user.UserOrderVO;
import org.apache.ibatis.annotations.Param;

/**
 * @author 周欣
 * 订单信息
 */
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {

    /**
     * 根据id查询订单信息
     * @param id
     * @return 订单信息
     */
    OrderInfo selectByIdIgnoreDelete(String id);

    /**
     * 判断 是否删除和删除类型
     * @param orderId 订单号
     * @param hasDelete 逻辑删除
     * @param deleteType 删除原因: 1订单撤销 2手动删除 3系统删除
     * @return boolean值
     */
    boolean manualDelete(@Param("id") String orderId, @Param("hasDelete") int hasDelete, @Param("deleteType") int deleteType);

    /**
     * 普通用户订单页面
     */
    IPage<UserOrderVO> pageUserOrderVO(Page<UserOrderVO> page, @Param("sql") String selectSql, @Param("has_delete") int isDelete);

    /**
     * 配送员订单页面
     */
    IPage<CourierOrderVO> pageCourierOrderVO(Page<CourierOrderVO> page, @Param("sql") String sql);

    /**
     * 管理员订单页面
     */
    IPage<AdminOrderVO> pageAdminOrderVO(Page<AdminOrderVO> page, @Param("sql")  String sql, @Param("has_delete") int isDelete);
}
